// ...existing code...
import { message } from '@/components/AntdGlobal';

/**
 * 复制文本到剪贴板（优先使用 navigator.clipboard，失败则使用 prompt 提示手动复制）
 */
export const copyToClipboard = async (text: string): Promise<boolean> => {
    if (!text) return false;

    // 优先使用异步 Clipboard API
    try {
        if (navigator.clipboard && typeof navigator.clipboard.writeText === 'function') {
            await navigator.clipboard.writeText(text);
            return true;
        }
    } catch (error) {
        // 忽略，尝试后备方案
        console.error('navigator.clipboard.writeText 失败：', error);
    }

    // 后备：为不支持 Clipboard API 的环境使用 prompt，提示用户手动复制
    try {
        // window.prompt 会返回用户输入或 null，但主要目的是让用户能方便复制文本
        // 这里假设用户会手动复制，返回 true 表示“已提示用户复制”
        // 若需要严格判断可改为返回 false 并在调用处根据情况提示
        // 使用 readonly textarea 选择并聚焦也可，但无法无声复制（不使用 execCommand）
        // 所以使用 prompt 作为最兼容的替代方案
        window.prompt('复制以下文本（按 ⌘/Ctrl + C 复制）:', text);
        return true;
    } catch (error) {
        console.error('prompt 失败：', error);
        return false;
    }
};

/**
 * Hook：返回一个处理复制的函数
 * 使用：const handleCopy = useCopyOnDoubleClick();
 * onDoubleClick={() => handleCopy(text)}
 */
export const useCopyOnDoubleClick = () => {
    return async (text?: string) => {
        if (!text) {
            message.warning('无可复制内容');
            return;
        }
        const ok = await copyToClipboard(text);
        if (ok) {
            message.success('已复制到剪贴板');
        } else {
            message.error('复制失败，请手动复制');
        }
    };
};
